Challenge #37: Parsing a Raw XML File ~XMLファイルのパース~ – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
当エントリは『Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018』の10日目です。
- Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018 - Qiita
- Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018 | シリーズ | Developers.IO
『Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018』では、Alteryx Communityで公開されているWeekly ChallengeのIntermediate Levelにひたすら1人で挑戦していきます。
今回はXMLファイルのパースに挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2018.4.3.54046 英語版
Challenge #37: Parsing a Raw XML File
お題
今回挑戦するお題はこちら。
「Input」側のデータはこちら。「customer_OuterXML」列がXMLになっています。
「Output」側のデータはこちら。
解答の概要
今回作成するワーフクローは以下の通りです。
- Record IDツールでIDを付与
- Select、XML Parse、SummarizeツールでXMLのパース
- SelectツールでXML以外のデータを準備
- Multiple Joinツールでデータの結合
IDの付与
Record IDツール(Preparation -> Record ID)を使用して、IDを割り当てます。
XMLのパース
Selectツール(Preparation -> Select)を使用して、「RecordID」「customer_OuterXML」列のみ残します。
XML Parseツール(Parse -> XML Parse)を使用して、「customer_OuterXML」列の内容を展開します。XML Element to Parse に Root
を選択し、Return Child Values
と Return Outer XML
を選択します。
XML Parseツールの出力を確認すると、「reference」「reference_OuterXML」といった列が作成されています。
ここから3つに分かれて処理を行います。
「Customer_Reference」列の作成
Summarizeツール(Transform -> Summarize)を使用して、「Customer_Reference」列を作成します。「RecordID」列でグループ化し、「reference」列の文字列を出力しています。
「Customer_Reference」列を作成できました。
「Customer_Bill_to_」列の作成
Selectツールで「RecordID」「bill_to_OuterXML」列のみ残します。
XML Parseツールを2つ使用します。1つは Specific Child Name を選択して contact
を入力、Return Child Values
を選択します。もう1つは Specific Child Name を選択して address
を入力、Return Child Values
を選択します。
Selectツールを使用して不要な列を削除し、列の名前を調整します。
「Customer_Bill_to_」列を作成できました。
「Customer_Ship_to_」列の作成
「ship_to_OuterXML」列に対して 「Customer_Bill_to_」列の作成 と同様の処理を行い、「Customer_Ship_to_」列を作成します。
XML以外のデータの準備
元のデータには、「Order Number」などのXML以外のデータがあります。このあとデータを結合するため、XML以外のデータを準備します。
初めのRecord IDツールの出力にSelectツールを接続し、「customer_OuterXML」列を削除します。これでXML以外のデータを準備できました。
データの結合
準備したデータをJoin Multipleツール(Join -> Join Multiple)を使用して、結合します。それぞれのデータには「RecordID」列があるので、Join by Specific Fields を選択して「RecordID」列を使用して結合します。また、重複した「RecordID」列を削除し、列の順番を調整します。
結果を確認して完成です。
最後に
今回はWeekly ChallengeのChallenge #37: Parsing a Raw XML Fileに挑戦しました。
明日もお楽しみに!
サンプルワークフローのご案内
クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。